// lodash 中的 curry 基本使用 

const _ = require('lodash')

let paramsAdd = function (a,b,c){
    return a + b + c
} 

let add = _.curry(paramsAdd)
console.log(add(1)(2)(3)) // 6
console.log(add(1,2)(3)) // 6
console.log(add(1)(2,30)) // 6


//  结合律案例

const match = _.curry(function (reg, str) {
    return str.match(reg)
  })
  
  const haveSpace = match(/\s+/g)
  const haveNumber = match(/\d+/g)
  
  const filter = _.curry(function (func, array) {
    return array.filter(func)
  })
  
  
  // console.log(haveSpace('helloworld'))
  // console.log(haveNumber('abc'))
  
  
  
  console.log(filter(haveSpace, ['John Connor', 'John_Donne']))
  
  
  const findSpace = filter(haveSpace) // 传第一个参数
  console.log(findSpace(['John Connor', 'John_Donne'])) // 传第二个参数